#!/bin/bash
set -e

# 参数处理
BACKUP_SET=${1:-latest}
TYPE=${2:-default}  # 可能的值: default, time (时间点恢复)
RECOVERY_TIME=${3:-""}  # 格式: "YYYY-MM-DD HH:MM:SS"

# 检查PostgreSQL状态
pg_isready > /dev/null 2>&1
if [ $? -eq 0 ]; then
  echo "PostgreSQL 需要停止才能执行还原..."
  # 停止 PostgreSQL
  pg_ctl -D /var/lib/postgresql/data stop -m fast
fi

# 清空数据目录
echo "清空数据目录..."
find /var/lib/postgresql/data -mindepth 1 -delete

# 执行还原
if [ "$TYPE" == "time" ] && [ ! -z "$RECOVERY_TIME" ]; then
  echo "开始执行时间点还原到 $RECOVERY_TIME..."
  pgbackrest --stanza=poddb --log-level-console=info --set=$BACKUP_SET --type=time --target="$RECOVERY_TIME" --target-action=promote restore
else
  echo "开始执行普通还原，备份集: $BACKUP_SET..."
  pgbackrest --stanza=poddb --log-level-console=info --set=$BACKUP_SET restore
fi

# 设置正确的权限
chown -R postgres:postgres /var/lib/postgresql/data
chmod 700 /var/lib/postgresql/data

echo "还原完成，可以启动PostgreSQL。" 